const Router = require('koa-router');
const router = new Router();
const fs = require('fs');
const path = require('path');
// const targetDir = path.join(__dirname,'target');



router.get("/getFiles",async (ctx) => {
  const filePath = ctx.query.currentPath;
  let list =[]
  if(filePath === "") {
    list = fs.readdirSync("D:/")
  }else {
    list = fs.readdirSync(filePath)
  }

  if(filePath.indexOf(".")){
    fs.readdir("D://桌面/热成像导出图像",(err,files) => {
      if(err) console.error('欸~，没有读取到，哈哈哈(￣y▽￣)╭ Ohohoho.....：',err);
      files.forEach(item => {
        // 拼接每一个文件的地址
        console.log(item,"123")
        const filePath = path.join("D://桌面/热成像导出图像",item);
        // 获取每一个文件存放的地址
        const newFilePath = path.join(path.join(__dirname,"src/assets/a"),item);
        // 通过读取流读取文件
        const rs = fs.createReadStream(filePath);
        // 创建写入流将数据写入文件
        const ws = fs.createWriteStream(newFilePath);
        // 通过管道写入数据
        rs.pipe(ws);
        console.log('你已经全部写入了哦，(￢︿̫̿￢☆)');
      })
    })
  }

  ctx.body ={
    msg:"succeed",
    list,
    filePath
  }
})

router.get("/getFiles/anyFiles",async (ctx) => {
  // const data = ctx.request.body;
  // 请求头传递过来的数据
  const fileInfo = ctx.query;
  // 获取文件列表
  let fileslist = [];
  // 文件路径
  let filePath = ""
  // 如果参数只有文件名，则表示这个文件不是最后的文件，
  // 那么将文件名凭借到地址中，反之返回文件信息
  // 根据文件名返回文件
  if(fileInfo.filename !== "" && fileInfo.suffix === ""){
    filePath = fileInfo.currentPath + "/" + fileInfo.filename
    fileslist = fs.readdirSync(filePath)
    // const newFilesList = getFilesByName(fileInfo.filename,fileslist)
    ctx.body = {
      msg: "返回文件：" + fileInfo.filename,
      list:fileslist,
      filePath
    }
  }else if(fileInfo.filename === "" && fileInfo.suffix === ""){
    if(fileInfo.currentPath === "") {
      fileInfo.currentPath = "D:/"
      filePath = fileInfo.currentPath
      fileslist = fs.readdirSync(filePath)
    }else {
      // filePath = fileInfo.currentPath
      fileslist = fs.readdirSync("D:/")
    }
    // 返回桌面文件目录
    ctx.body = {
      msg: "返回所有根目录文件",
      list:fileslist,
      filePath
    }
  }


  // 更具文件名称获取文件内容
  // 没有传送数据，返回根目录文件
  // if(fileInfo.filename === "" && fileInfo.suffix === "") {
    
  // }
  // 文件名为空，但有后缀
  if(fileInfo.filename === "" && fileInfo.suffix !== ""){
    fileslist = fs.readdirSync(fileInfo.currentPath)
    const newFilesList = getFilesBySuf(fileInfo.suffix,fileslist)
    ctx.body = {
      msg: "返回文件名相同的文件或后缀相同的文件" + fileInfo.suffix,
      list:newFilesList,
      filePath: fileInfo.currentPath
    }
  }
  // 根据文件名和后缀返回文件
  if(fileInfo.filename !== "" && fileInfo.suffix !== ""){
    // 文件地址
    const currentFilePath = fileInfo.currentPath + "/" + fileInfo.filename + "." + fileInfo.suffix

    // const rs = fs.createReadStream(currentFilePath);
    // // 创建写入流将数据写入文件
    // const ws = fs.createWriteStream(path.join(path.join(__dirname,"targets"),"aa.jpg"));
    // rs.pipe(ws);
    ctx.body = {
      filePath:currentFilePath,
      // ws,
      __dirname
    }
  }
  // ctx.body = {
  //   fileInfo,
  //   msg:"返回信息"
  // }
})


// 根据后缀名获取文件列表
function getFilesBySuf(suf,filesList) {
  const newFilesList = []
  filesList.forEach(item => {
    if(item.split(".")[1] === suf) {
      // 将相同后缀名的文件保存到一个数组中
      newFilesList.push(item)
    }
  })
  return newFilesList
}

// 根据文件名和后缀返回文件列表
// function getFilesByNameAndSuf(name,suf,filesList) {
//   const newFilesList = []
//   filesList.forEach(item => {
//     if(item.split(".")[0] === name && item.split(".")[1] === suf) {
//       // 将相同后缀名的文件保存到一个数组中
//       newFilesList.push(item)
//     }
//   })
//   return newFilesList
// }

// 根据文件名返回文件
// function getFilesByName(name,filesList) {
//   const newFilesList = []
//   filesList.forEach(item => {
//     if(item.split(".")[0] === name) {
//       // 将相同后缀名的文件保存到一个数组中
//       newFilesList.push(item)
//     }
//   })
//   return newFilesList
// }

// 读取.txt文件
function getTxtFileInfos(path,ctx) {
  fs.readFile(path,(err,data) => {
    // 读取失败
    if(err) {
      throw err
    }
    ctx.body = {
      data,
      msg:"you are right"
    }
  })
}


module.exports = router;